// Copyright (c) SimpleIdServer. All rights reserved.
// Licensed under the Apache License, Version 2.0. See LICENSE in the project root for license information.
using Nethereum.ABI.FunctionEncoding.Attributes;
using Nethereum.Contracts;
using System.Numerics;

namespace SimpleIdServer.Did.Ethr.Services
{
    public partial class EthereumDIDRegistryDeployment : EthereumDIDRegistryDeploymentBase
    {
        public EthereumDIDRegistryDeployment() : base(BYTECODE) { }
        public EthereumDIDRegistryDeployment(string byteCode) : base(byteCode) { }
    }

    public class EthereumDIDRegistryDeploymentBase : ContractDeploymentMessage
    {
        public static string BYTECODE = "608060405234801561001057600080fd5b506124aa806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ff5760003560e01c806380b29f7c11610097578063a7068d6611610066578063a7068d66146102b8578063e476af5c146102d4578063f00d4b5d146102f0578063f96d0f9f1461030c576100ff565b806380b29f7c146102345780638733d4e81461025057806393072684146102805780639c2c1b2b1461029c576100ff565b8063240cf1fa116100d3578063240cf1fa1461019c578063622b2a3c146101b857806370ae92d2146101e85780637ad4b0a414610218576100ff565b8062c023da14610104578063022914a7146101205780630d44625b14610150578063123b5e9814610180575b600080fd5b61011e600480360381019061011991906114b9565b61033c565b005b61013a60048036038101906101359190611528565b61034d565b6040516101479190611564565b60405180910390f35b61016a6004803603810190610165919061157f565b610380565b60405161017791906115eb565b60405180910390f35b61019a6004803603810190610195919061166b565b6103b2565b005b6101b660048036038101906101b19190611729565b61045d565b005b6101d260048036038101906101cd919061157f565b610500565b6040516101df91906117bf565b60405180910390f35b61020260048036038101906101fd9190611528565b6105c6565b60405161020f91906115eb565b60405180910390f35b610232600480360381019061022d91906117da565b6105de565b005b61024e6004803603810190610249919061157f565b6105f1565b005b61026a60048036038101906102659190611528565b610602565b6040516102779190611564565b60405180910390f35b61029a6004803603810190610295919061185d565b6106ad565b005b6102b660048036038101906102b191906118ea565b610754565b005b6102d260048036038101906102cd919061198c565b6107ff565b005b6102ee60048036038101906102e991906119f3565b610812565b005b61030a60048036038101906103059190611a9c565b6108b9565b005b61032660048036038101906103219190611528565b6108c8565b60405161033391906115eb565b60405180910390f35b610348833384846108e0565b505050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b6000601960f81b600060f81b30600360006103cc8d610602565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b888888604051602001610422989796959493929190611ce2565b6040516020818303038152906040528051906020012090506104538861044b8a8a8a8a87610a38565b868686610b64565b5050505050505050565b6000601960f81b600060f81b30600360006104778b610602565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205489866040516020016104c996959493929190611dc7565b6040516020818303038152906040528051906020012090506104f8866104f28888888887610a38565b84610cc7565b505050505050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856040516020016105559190611e51565b60405160208183030381529060405280519060200120815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490504281119150509392505050565b60036020528060005260406000206000915090505481565b6105eb8433858585610b64565b50505050565b6105fd83338484610e96565b505050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106a357809150506106a8565b829150505b919050565b6000601960f81b600060f81b30600360006106c78c610602565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405160200161071b9796959493929190611eb8565b60405160208183030381529060405280519060200120905061074b876107448989898987610a38565b8585610e96565b50505050505050565b6000601960f81b600060f81b306003600061076e8d610602565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b8888886040516020016107c4989796959493929190611f90565b6040516020818303038152906040528051906020012090506107f5886107ed8a8a8a8a87610a38565b8686866110a5565b5050505050505050565b61080c84338585856110a5565b50505050565b6000601960f81b600060f81b306003600061082c8c610602565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a87876040516020016108809796959493929190612079565b6040516020818303038152906040528051906020012090506108b0876108a98989898987610a38565b85856108e0565b50505050505050565b6108c4823383610cc7565b5050565b60026020528060005260406000206000915090505481565b83836108eb82610602565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f9061215e565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e485856000600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516109e49493929190612203565b60405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b60008060018387878760405160008152602001604052604051610a5e949392919061225e565b6020604051602081039080840390855afa158015610a80573d6000803e3d6000fd5b505050602060405103519050610a9587610602565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af9906122ef565b60405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610b529061233e565b91905055508091505095945050505050565b8484610b6f82610602565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd39061215e565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e486868642610c229190612386565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051610c7294939291906123ba565b60405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b8282610cd282610602565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d369061215e565b60405180910390fd5b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f38a5a6e68f30ed1ab45860a4afb34bcb2fc00f22ca462d249b8a8d40cda6f7a384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051610e43929190612406565b60405180910390a243600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b8383610ea182610602565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f059061215e565b60405180910390fd5b42600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600086604051602001610f619190611e51565b60405160208183030381529060405280519060200120815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f7858542600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051611051949392919061242f565b60405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b84846110b082610602565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461111d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111149061215e565b60405180910390fd5b82426111299190612386565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760405160200161117b9190611e51565b60405160208183030381529060405280519060200120815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff167f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f7868686426112269190612386565b600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051611276949392919061242f565b60405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061130a826112df565b9050919050565b61131a816112ff565b811461132557600080fd5b50565b60008135905061133781611311565b92915050565b6000819050919050565b6113508161133d565b811461135b57600080fd5b50565b60008135905061136d81611347565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6113c68261137d565b810181811067ffffffffffffffff821117156113e5576113e461138e565b5b80604052505050565b60006113f86112cb565b905061140482826113bd565b919050565b600067ffffffffffffffff8211156114245761142361138e565b5b61142d8261137d565b9050602081019050919050565b82818337600083830152505050565b600061145c61145784611409565b6113ee565b90508281526020810184848401111561147857611477611378565b5b61148384828561143a565b509392505050565b600082601f8301126114a05761149f611373565b5b81356114b0848260208601611449565b91505092915050565b6000806000606084860312156114d2576114d16112d5565b5b60006114e086828701611328565b93505060206114f18682870161135e565b925050604084013567ffffffffffffffff811115611512576115116112da565b5b61151e8682870161148b565b9150509250925092565b60006020828403121561153e5761153d6112d5565b5b600061154c84828501611328565b91505092915050565b61155e816112ff565b82525050565b60006020820190506115796000830184611555565b92915050565b600080600060608486031215611598576115976112d5565b5b60006115a686828701611328565b93505060206115b78682870161135e565b92505060406115c886828701611328565b9150509250925092565b6000819050919050565b6115e5816115d2565b82525050565b600060208201905061160060008301846115dc565b92915050565b600060ff82169050919050565b61161c81611606565b811461162757600080fd5b50565b60008135905061163981611613565b92915050565b611648816115d2565b811461165357600080fd5b50565b6000813590506116658161163f565b92915050565b600080600080600080600060e0888a03121561168a576116896112d5565b5b60006116988a828b01611328565b97505060206116a98a828b0161162a565b96505060406116ba8a828b0161135e565b95505060606116cb8a828b0161135e565b94505060806116dc8a828b0161135e565b93505060a088013567ffffffffffffffff8111156116fd576116fc6112da565b5b6117098a828b0161148b565b92505060c061171a8a828b01611656565b91505092959891949750929550565b600080600080600060a08688031215611745576117446112d5565b5b600061175388828901611328565b95505060206117648882890161162a565b94505060406117758882890161135e565b93505060606117868882890161135e565b925050608061179788828901611328565b9150509295509295909350565b60008115159050919050565b6117b9816117a4565b82525050565b60006020820190506117d460008301846117b0565b92915050565b600080600080608085870312156117f4576117f36112d5565b5b600061180287828801611328565b94505060206118138782880161135e565b935050604085013567ffffffffffffffff811115611834576118336112da565b5b6118408782880161148b565b925050606061185187828801611656565b91505092959194509250565b60008060008060008060c0878903121561187a576118796112d5565b5b600061188889828a01611328565b965050602061189989828a0161162a565b95505060406118aa89828a0161135e565b94505060606118bb89828a0161135e565b93505060806118cc89828a0161135e565b92505060a06118dd89828a01611328565b9150509295509295509295565b600080600080600080600060e0888a031215611909576119086112d5565b5b60006119178a828b01611328565b97505060206119288a828b0161162a565b96505060406119398a828b0161135e565b955050606061194a8a828b0161135e565b945050608061195b8a828b0161135e565b93505060a061196c8a828b01611328565b92505060c061197d8a828b01611656565b91505092959891949750929550565b600080600080608085870312156119a6576119a56112d5565b5b60006119b487828801611328565b94505060206119c58782880161135e565b93505060406119d687828801611328565b92505060606119e787828801611656565b91505092959194509250565b60008060008060008060c08789031215611a1057611a0f6112d5565b5b6000611a1e89828a01611328565b9650506020611a2f89828a0161162a565b9550506040611a4089828a0161135e565b9450506060611a5189828a0161135e565b9350506080611a6289828a0161135e565b92505060a087013567ffffffffffffffff811115611a8357611a826112da565b5b611a8f89828a0161148b565b9150509295509295509295565b60008060408385031215611ab357611ab26112d5565b5b6000611ac185828601611328565b9250506020611ad285828601611328565b9150509250929050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6000819050919050565b611b23611b1e82611adc565b611b08565b82525050565b6000819050919050565b6000611b4e611b49611b44846112df565b611b29565b6112df565b9050919050565b6000611b6082611b33565b9050919050565b6000611b7282611b55565b9050919050565b60008160601b9050919050565b6000611b9182611b79565b9050919050565b6000611ba382611b86565b9050919050565b611bbb611bb682611b67565b611b98565b82525050565b6000819050919050565b611bdc611bd7826115d2565b611bc1565b82525050565b611bf3611bee826112ff565b611b98565b82525050565b600081905092915050565b7f7365744174747269627574650000000000000000000000000000000000000000600082015250565b6000611c3a600c83611bf9565b9150611c4582611c04565b600c82019050919050565b6000819050919050565b611c6b611c668261133d565b611c50565b82525050565b600081519050919050565b600081905092915050565b60005b83811015611ca5578082015181840152602081019050611c8a565b60008484015250505050565b6000611cbc82611c71565b611cc68185611c7c565b9350611cd6818560208601611c87565b80840191505092915050565b6000611cee828b611b12565b600182019150611cfe828a611b12565b600182019150611d0e8289611baa565b601482019150611d1e8288611bcb565b602082019150611d2e8287611be2565b601482019150611d3d82611c2d565b9150611d498286611c5a565b602082019150611d598285611cb1565b9150611d658284611bcb565b6020820191508190509998505050505050505050565b7f6368616e67654f776e6572000000000000000000000000000000000000000000600082015250565b6000611db1600b83611bf9565b9150611dbc82611d7b565b600b82019050919050565b6000611dd38289611b12565b600182019150611de38288611b12565b600182019150611df38287611baa565b601482019150611e038286611bcb565b602082019150611e138285611be2565b601482019150611e2282611da4565b9150611e2e8284611be2565b601482019150819050979650505050505050565b611e4b8161133d565b82525050565b6000602082019050611e666000830184611e42565b92915050565b7f7265766f6b6544656c6567617465000000000000000000000000000000000000600082015250565b6000611ea2600e83611bf9565b9150611ead82611e6c565b600e82019050919050565b6000611ec4828a611b12565b600182019150611ed48289611b12565b600182019150611ee48288611baa565b601482019150611ef48287611bcb565b602082019150611f048286611be2565b601482019150611f1382611e95565b9150611f1f8285611c5a565b602082019150611f2f8284611be2565b60148201915081905098975050505050505050565b7f61646444656c6567617465000000000000000000000000000000000000000000600082015250565b6000611f7a600b83611bf9565b9150611f8582611f44565b600b82019050919050565b6000611f9c828b611b12565b600182019150611fac828a611b12565b600182019150611fbc8289611baa565b601482019150611fcc8288611bcb565b602082019150611fdc8287611be2565b601482019150611feb82611f6d565b9150611ff78286611c5a565b6020820191506120078285611be2565b6014820191506120178284611bcb565b6020820191508190509998505050505050505050565b7f7265766f6b654174747269627574650000000000000000000000000000000000600082015250565b6000612063600f83611bf9565b915061206e8261202d565b600f82019050919050565b6000612085828a611b12565b6001820191506120958289611b12565b6001820191506120a58288611baa565b6014820191506120b58287611bcb565b6020820191506120c58286611be2565b6014820191506120d482612056565b91506120e08285611c5a565b6020820191506120f08284611cb1565b915081905098975050505050505050565b600082825260208201905092915050565b7f6261645f6163746f720000000000000000000000000000000000000000000000600082015250565b6000612148600983612101565b915061215382612112565b602082019050919050565b600060208201905081810360008301526121778161213b565b9050919050565b600082825260208201905092915050565b600061219a82611c71565b6121a4818561217e565b93506121b4818560208601611c87565b6121bd8161137d565b840191505092915050565b6000819050919050565b60006121ed6121e86121e3846121c8565b611b29565b6115d2565b9050919050565b6121fd816121d2565b82525050565b60006080820190506122186000830187611e42565b818103602083015261222a818661218f565b905061223960408301856121f4565b61224660608301846115dc565b95945050505050565b61225881611606565b82525050565b60006080820190506122736000830187611e42565b612280602083018661224f565b61228d6040830185611e42565b61229a6060830184611e42565b95945050505050565b7f6261645f7369676e617475726500000000000000000000000000000000000000600082015250565b60006122d9600d83612101565b91506122e4826122a3565b602082019050919050565b60006020820190508181036000830152612308816122cc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612349826115d2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361237b5761237a61230f565b5b600182019050919050565b6000612391826115d2565b915061239c836115d2565b92508282019050808211156123b4576123b361230f565b5b92915050565b60006080820190506123cf6000830187611e42565b81810360208301526123e1818661218f565b90506123f060408301856115dc565b6123fd60608301846115dc565b95945050505050565b600060408201905061241b6000830185611555565b61242860208301846115dc565b9392505050565b60006080820190506124446000830187611e42565b6124516020830186611555565b61245e60408301856115dc565b61246b60608301846115dc565b9594505050505056fea2646970667358221220a79e22ce58021b56cf1719c29b82503586446a452a066886c7ba7e3d62a09ff364736f6c63430008130033";
        public EthereumDIDRegistryDeploymentBase() : base(BYTECODE) { }
        public EthereumDIDRegistryDeploymentBase(string byteCode) : base(byteCode) { }

    }

    public partial class AddDelegateFunction : AddDelegateFunctionBase { }

    [Function("addDelegate")]
    public class AddDelegateFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("bytes32", "delegateType", 2)]
        public virtual byte[] DelegateType { get; set; }
        [Parameter("address", "delegate", 3)]
        public virtual string Delegate { get; set; }
        [Parameter("uint256", "validity", 4)]
        public virtual BigInteger Validity { get; set; }
    }

    public partial class AddDelegateSignedFunction : AddDelegateSignedFunctionBase { }

    [Function("addDelegateSigned")]
    public class AddDelegateSignedFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("uint8", "sigV", 2)]
        public virtual byte SigV { get; set; }
        [Parameter("bytes32", "sigR", 3)]
        public virtual byte[] SigR { get; set; }
        [Parameter("bytes32", "sigS", 4)]
        public virtual byte[] SigS { get; set; }
        [Parameter("bytes32", "delegateType", 5)]
        public virtual byte[] DelegateType { get; set; }
        [Parameter("address", "delegate", 6)]
        public virtual string Delegate { get; set; }
        [Parameter("uint256", "validity", 7)]
        public virtual BigInteger Validity { get; set; }
    }

    public partial class ChangeOwnerFunction : ChangeOwnerFunctionBase { }

    [Function("changeOwner")]
    public class ChangeOwnerFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("address", "newOwner", 2)]
        public virtual string NewOwner { get; set; }
    }

    public partial class ChangeOwnerSignedFunction : ChangeOwnerSignedFunctionBase { }

    [Function("changeOwnerSigned")]
    public class ChangeOwnerSignedFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("uint8", "sigV", 2)]
        public virtual byte SigV { get; set; }
        [Parameter("bytes32", "sigR", 3)]
        public virtual byte[] SigR { get; set; }
        [Parameter("bytes32", "sigS", 4)]
        public virtual byte[] SigS { get; set; }
        [Parameter("address", "newOwner", 5)]
        public virtual string NewOwner { get; set; }
    }

    public partial class ChangedFunction : ChangedFunctionBase { }

    [Function("changed", "uint256")]
    public class ChangedFunctionBase : FunctionMessage
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class DelegatesFunction : DelegatesFunctionBase { }

    [Function("delegates", "uint256")]
    public class DelegatesFunctionBase : FunctionMessage
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
        [Parameter("bytes32", "", 2)]
        public virtual byte[] ReturnValue2 { get; set; }
        [Parameter("address", "", 3)]
        public virtual string ReturnValue3 { get; set; }
    }

    public partial class IdentityOwnerFunction : IdentityOwnerFunctionBase { }

    [Function("identityOwner", "address")]
    public class IdentityOwnerFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
    }

    public partial class NonceFunction : NonceFunctionBase { }

    [Function("nonce", "uint256")]
    public class NonceFunctionBase : FunctionMessage
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class OwnersFunction : OwnersFunctionBase { }

    [Function("owners", "address")]
    public class OwnersFunctionBase : FunctionMessage
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class RevokeAttributeFunction : RevokeAttributeFunctionBase { }

    [Function("revokeAttribute")]
    public class RevokeAttributeFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("bytes32", "name", 2)]
        public virtual byte[] Name { get; set; }
        [Parameter("bytes", "value", 3)]
        public virtual byte[] Value { get; set; }
    }

    public partial class RevokeAttributeSignedFunction : RevokeAttributeSignedFunctionBase { }

    [Function("revokeAttributeSigned")]
    public class RevokeAttributeSignedFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("uint8", "sigV", 2)]
        public virtual byte SigV { get; set; }
        [Parameter("bytes32", "sigR", 3)]
        public virtual byte[] SigR { get; set; }
        [Parameter("bytes32", "sigS", 4)]
        public virtual byte[] SigS { get; set; }
        [Parameter("bytes32", "name", 5)]
        public virtual byte[] Name { get; set; }
        [Parameter("bytes", "value", 6)]
        public virtual byte[] Value { get; set; }
    }

    public partial class RevokeDelegateFunction : RevokeDelegateFunctionBase { }

    [Function("revokeDelegate")]
    public class RevokeDelegateFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("bytes32", "delegateType", 2)]
        public virtual byte[] DelegateType { get; set; }
        [Parameter("address", "delegate", 3)]
        public virtual string Delegate { get; set; }
    }

    public partial class RevokeDelegateSignedFunction : RevokeDelegateSignedFunctionBase { }

    [Function("revokeDelegateSigned")]
    public class RevokeDelegateSignedFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("uint8", "sigV", 2)]
        public virtual byte SigV { get; set; }
        [Parameter("bytes32", "sigR", 3)]
        public virtual byte[] SigR { get; set; }
        [Parameter("bytes32", "sigS", 4)]
        public virtual byte[] SigS { get; set; }
        [Parameter("bytes32", "delegateType", 5)]
        public virtual byte[] DelegateType { get; set; }
        [Parameter("address", "delegate", 6)]
        public virtual string Delegate { get; set; }
    }

    public partial class SetAttributeFunction : SetAttributeFunctionBase { }

    [Function("setAttribute")]
    public class SetAttributeFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("bytes32", "name", 2)]
        public virtual byte[] Name { get; set; }
        [Parameter("bytes", "value", 3)]
        public virtual byte[] Value { get; set; }
        [Parameter("uint256", "validity", 4)]
        public virtual BigInteger Validity { get; set; }
    }

    public partial class SetAttributeSignedFunction : SetAttributeSignedFunctionBase { }

    [Function("setAttributeSigned")]
    public class SetAttributeSignedFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("uint8", "sigV", 2)]
        public virtual byte SigV { get; set; }
        [Parameter("bytes32", "sigR", 3)]
        public virtual byte[] SigR { get; set; }
        [Parameter("bytes32", "sigS", 4)]
        public virtual byte[] SigS { get; set; }
        [Parameter("bytes32", "name", 5)]
        public virtual byte[] Name { get; set; }
        [Parameter("bytes", "value", 6)]
        public virtual byte[] Value { get; set; }
        [Parameter("uint256", "validity", 7)]
        public virtual BigInteger Validity { get; set; }
    }

    public partial class ValidDelegateFunction : ValidDelegateFunctionBase { }

    [Function("validDelegate", "bool")]
    public class ValidDelegateFunctionBase : FunctionMessage
    {
        [Parameter("address", "identity", 1)]
        public virtual string Identity { get; set; }
        [Parameter("bytes32", "delegateType", 2)]
        public virtual byte[] DelegateType { get; set; }
        [Parameter("address", "delegate", 3)]
        public virtual string Delegate { get; set; }
    }

    public partial class DIDAttributeChangedEventDTO : DIDAttributeChangedEventDTOBase { }

    [Event("DIDAttributeChanged")]
    public class DIDAttributeChangedEventDTOBase : IEventDTO
    {
        [Parameter("address", "identity", 1, true )]
        public virtual string Identity { get; set; }
        [Parameter("bytes32", "name", 2, false )]
        public virtual byte[] Name { get; set; }
        [Parameter("bytes", "value", 3, false )]
        public virtual byte[] Value { get; set; }
        [Parameter("uint256", "validTo", 4, false )]
        public virtual BigInteger ValidTo { get; set; }
        [Parameter("uint256", "previousChange", 5, false )]
        public virtual BigInteger PreviousChange { get; set; }
    }

    public partial class DIDDelegateChangedEventDTO : DIDDelegateChangedEventDTOBase { }

    [Event("DIDDelegateChanged")]
    public class DIDDelegateChangedEventDTOBase : IEventDTO
    {
        [Parameter("address", "identity", 1, true )]
        public virtual string Identity { get; set; }
        [Parameter("bytes32", "delegateType", 2, false )]
        public virtual byte[] DelegateType { get; set; }
        [Parameter("address", "delegate", 3, false )]
        public virtual string Delegate { get; set; }
        [Parameter("uint256", "validTo", 4, false )]
        public virtual BigInteger ValidTo { get; set; }
        [Parameter("uint256", "previousChange", 5, false )]
        public virtual BigInteger PreviousChange { get; set; }
    }

    public partial class DIDOwnerChangedEventDTO : DIDOwnerChangedEventDTOBase { }

    [Event("DIDOwnerChanged")]
    public class DIDOwnerChangedEventDTOBase : IEventDTO
    {
        [Parameter("address", "identity", 1, true )]
        public virtual string Identity { get; set; }
        [Parameter("address", "owner", 2, false )]
        public virtual string Owner { get; set; }
        [Parameter("uint256", "previousChange", 3, false )]
        public virtual BigInteger PreviousChange { get; set; }
    }









    public partial class ChangedOutputDTO : ChangedOutputDTOBase { }

    [FunctionOutput]
    public class ChangedOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class DelegatesOutputDTO : DelegatesOutputDTOBase { }

    [FunctionOutput]
    public class DelegatesOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class IdentityOwnerOutputDTO : IdentityOwnerOutputDTOBase { }

    [FunctionOutput]
    public class IdentityOwnerOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }

    public partial class NonceOutputDTO : NonceOutputDTOBase { }

    [FunctionOutput]
    public class NonceOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("uint256", "", 1)]
        public virtual BigInteger ReturnValue1 { get; set; }
    }

    public partial class OwnersOutputDTO : OwnersOutputDTOBase { }

    [FunctionOutput]
    public class OwnersOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("address", "", 1)]
        public virtual string ReturnValue1 { get; set; }
    }













    public partial class ValidDelegateOutputDTO : ValidDelegateOutputDTOBase { }

    [FunctionOutput]
    public class ValidDelegateOutputDTOBase : IFunctionOutputDTO 
    {
        [Parameter("bool", "", 1)]
        public virtual bool ReturnValue1 { get; set; }
    }
}
